﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Onshi.POS.Modelo.Entidades
{
    [Serializable]
    public abstract class EntidadAbstracta<TEntidadCampoPersonalizado, TCampoPersonalizado> : EntidadSimple<Int32>
        where TCampoPersonalizado : CampoPersonalizadoBase
        where TEntidadCampoPersonalizado : EntidadCampoPersonalizado<TCampoPersonalizado>
    {
        #region Constructores

        public EntidadAbstracta() :
            base()
        {
        }

        #endregion

        #region Atributos

        private String codigo;
        private Byte[] imagen;
        private Boolean estaEliminado;
        private List<TEntidadCampoPersonalizado> camposPersonalizados;

        #endregion

        #region Propiedades

        public List<TEntidadCampoPersonalizado> CamposPersonalizados
        {
            get { return camposPersonalizados; }
            set { camposPersonalizados = value; }
        }

        public Boolean EstaEliminado
        {
            get { return estaEliminado; }
            set { estaEliminado = value; }
        }

        public String Estado
        {
            get { return !estaEliminado ? "Activo" : "Inactivo"; }
        }

        public Byte[] Imagen
        {
            get { return imagen; }
            set { imagen = value; }
        }

        public String Codigo
        {
            get { return codigo; }
            set { codigo = value; }
        }

        public Boolean TieneImagen
        {
            get { return imagen == null ? false : true; }
        }

        public String CodigoNombre
        {
            get { return String.Format("[{0}] {1}", codigo, Nombre); }
        }

        #endregion
    }
}
